package com.duoduo.common.api.myinterface.delay;


import com.duoduo.common.api.domain.DelayExecuteMessage;
import com.duoduo.common.api.spi.extension.SPI;

import java.io.Serializable;

/**jvm延迟任务
 * @author duoduo
 *
 */
@SPI
public interface DelayJvmManage {
	
	/**放入任务
	 * @param message
	 * @param delayTime 指定多少秒后执行
	 * @return 返回唯一id，用于取消任务，如果message里有traceId就直接返回
	 */
	<T extends Serializable> long sendDelayMessage(DelayExecuteMessage<T> message, int delayTime, Runnable handler);
	
	/**取消延迟任务
	 * @param traceId 唯一id
	 * @return 成功true；失败false
	 */
	boolean cancelTask(long traceId);
	
}
